Skip to content

9.17 Sql 模板

9.17.1 Sql 模板

通常我们程序中执行数据库的 sql 语句都写在了程序集中,随程序一起编译,后续需要修改,则重新编译代码。

所以,Furion 推出一种 Sql 模板的方式,程序执行 Sql 时,只需要使用特殊标记即可:#(模板Key),这些真实的 Sql 配置在 .json.xml 配置文件中。

如:

  • Json 方式
{  
  "Select.User": "select * from User where id > @id"  
}  

  • Xml 方式
<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
  <Select.User>select * from User where id > @id</Select.User>  
</configuration>  

9.17.2 Sql 模板优缺点

9.17.2.1 优点

  • 支持 Sql 动态配置,可在程序运行时动态调配 Sql 语句
  • 支持程序 Sql 语句加密

9.17.2.2 缺点

  • 需增加对应配置文件
  • 不容易调试 Sql 代码

9.17.3 如何使用

在执行 Sql 的时候,只需要填写指定模板即可。

9.17.3.1 常规使用

// 仓储方式  
var users = repository.SqlQuery<User>("#(Select.User)", new { id = 1});  

// 懒人方式  
var users = "#(Select.User)".SqlQuery<User>(new { id = 1});  

// Sql 代理方式  
[SqlExecute("#(Select.User)")]  
List<User> GetUser(int id);  

9.17.3.2 高级嵌套

var users = repository.SqlQuery<User>(  
@"select * from user u  
left join #(User.Detail) d on u.Id = d.UserId  
where id > @id");  

9.17.4 Sql 模板配置

9.17.4.1 普通模式

{  
  "Select.User": "select * from User"  
}  

9.17.4.2 更多配置

功能移除声明以下内容在 Furion 2.13 + 版本中已移除。

{  
  "Select.User": {  
    "Sql": "select * from User where id > @id and Name = @name",  
    "Params": [  
      {  
        "Name": " Id",  
        "Value": "1",  
        "DbType": "Int16",  
        "Size": 10  
      },  
      {  
        "Name": " Name",  
        "Value": "百小僧",  
        "DbType": "String",  
        "Size": 10  
      }  
    ]  
  }  
}  

9.17.5 反馈与建议

与我们交流给 Furion 提 Issue